/**
 * @author Alexandr Smirnov (luc@hot.ee)
 * 
 * SMap javascript maps library.
 */
 
SMap = {
	version: '0.3b',
	// from jQuery
	extend: function() {
		// copy reference to target object
		var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

		// Handle a deep copy situation
		if ( target.constructor == Boolean ) {
			deep = target;
			target = arguments[1] || {};
			// skip the boolean and the target
			i = 2;
		}

		// Handle case when target is a string or something (possible in deep copy)
		if ( typeof target != "object" && typeof target != "function" )
			target = {};

		// extend ourself if only one argument is passed
		if ( length == 1 ) {
			target = this;
			i = 0;
		}

		for ( ; i < length; i++ )
			// Only deal with non-null/undefined values
			if ( (options = arguments[ i ]) != null )
				// Extend the base object
				for ( var name in options ) {
					// Prevent never-ending loop
					if ( target === options[ name ] )
						continue;

					// Recurse if we're merging object values
					if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
						target[ name ] = jQuery.extend( target[ name ], options[ name ] );

					// Don't bring in undefined values
					else if ( options[ name ] != undefined )
						target[ name ] = options[ name ];

				}

		// Return the modified object
		return target;
	}
};